package br.com.cdto.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
public class Receptor extends Pessoa implements Serializable, Comparable<Receptor> {
	private static final long serialVersionUID = -2873859964746428883L;
	private String RGCT;
	private String nomeMae;
	private int cartaoSus;
	private double peso;
	private double altura;
	private String endereco;
	private String status;
	private String tipoSanguineo;
	private boolean criterioGravidade;
	@Temporal(TemporalType.TIMESTAMP)
	private Calendar dataInscricao;
	private String tipoOrgao;
	private String diagnostico;
	private String tipoCornea;
	
	@Transient
	private int posicaoLista;
	
	@OneToMany(cascade=CascadeType.ALL)
	private List<Exame> exames;
	@ManyToOne(cascade=CascadeType.ALL)
	private EquipeTransplantadora equipe;
		
	public EquipeTransplantadora getEquipe() {
		if(equipe == null){
			equipe = new EquipeTransplantadora();
		}
		return equipe;
	}

	public void setEquipe(EquipeTransplantadora equipe) {
		this.equipe = equipe;
	}

	public String getTipoOrgao() {
		return tipoOrgao;
	}

	public void setTipoOrgao(String tipoOrgao) {
		this.tipoOrgao = tipoOrgao;
	}

	public String getDiagnostico() {
		return diagnostico;
	}

	public void setDiagnostico(String diagnostico) {
		this.diagnostico = diagnostico;
	}

	public String getRGCT() {
		return RGCT;
	}

	public void setRGCT(String rGCT) {
		RGCT = rGCT;
	}

	public List<Exame> getExames() {
		if(exames == null){
			exames = new ArrayList<Exame>();
		}
		return exames;
	}

	public void setExames(List<Exame> exames) {
		this.exames = exames;
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) {
		this.nomeMae = nomeMae;
	}

	public int getCartaoSus() {
		return cartaoSus;
	}

	public void setCartaoSus(int cartaoSus) {
		this.cartaoSus = cartaoSus;
	}

	public double getPeso() {
		return peso;
	}

	public void setPeso(double peso) {
		this.peso = peso;
	}

	public double getAltura() {
		return altura;
	}

	public void setAltura(double altura) {
		this.altura = altura;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getTipoSanguineo() {
		return tipoSanguineo;
	}

	public void setTipoSanguineo(String tipoSanguineo) {
		this.tipoSanguineo = tipoSanguineo;
	}

	public boolean getCriterioGravidade() {
		return criterioGravidade;
	}

	public void setCriterioGravidade(boolean criterioGravidade) {
		this.criterioGravidade = criterioGravidade;
	}

	public Calendar getDataInscricao() {
		return dataInscricao;
	}

	public void setDataInscricao(Calendar dataInscricao) {
		this.dataInscricao = dataInscricao;
	}

	public int getPosicaoLista() {
		return posicaoLista;
	}

	public void setPosicaoLista(int posicaoLista) {
		this.posicaoLista = posicaoLista;
	}

	public String getTipoCornea() {
		return tipoCornea;
	}

	public void setTipoCornea(String tipoCornea) {
		this.tipoCornea = tipoCornea;
	}

	@Override
	public int compareTo(Receptor o) {
		return this.getDataInscricao().compareTo(o.getDataInscricao());
	}
	
}
